package Q16_04_Tic_Tac_Win;
import java.util.ArrayList;
import CtCILibrary.AssortedMethods;
public class QuestionH {
public static Piece hasWon(Piece[][] board) {
if (board.length != board[0].length) return Piece.Empty;
int size = board.length;
ArrayList<PositionIterator> instructions = new ArrayList<PositionIterator>();
for (int i = 0; i < board.length; i++) {
instructions.add(new PositionIterator(new Position(0, i), 1, 0, size));
instructions.add(new PositionIterator(new Position(i, 0), 0, 1, size));
}
instructions.add(new PositionIterator(new Position(0, 0), 1, 1, size));
instructions.add(new PositionIterator(new Position(0, size - 1), 1, -1, size));
for (PositionIterator iterator : instructions) {
Piece winner = hasWon(board, iterator);
if (winner != Piece.Empty) {
return winner;
}
}
return Piece.Empty;
}
public static Piece hasWon(Piece[][] board, PositionIterator iterator) {
Position firstPosition = iterator.next();
Piece first = board[firstPosition.row][firstPosition.column];
while (iterator.hasNext()) {
Position position = iterator.next();
if (board[position.row][position.column] != first) {
return Piece.Empty;
}
}
return first;
}
public static void main(String[] args) {
int N = 3;
int[][] board_t = AssortedMethods.randomMatrix(N, N, 0, 2);
Piece[][] board = new Piece[N][N];
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
int x = board_t[i][j];
board[i][j] = Tester.convertIntToPiece(x);
}
}
Piece p1 = hasWon(board);
System.out.println(p1);
AssortedMethods.printMatrix(board_t);
}
}